/*
 * 文件名：SimpleFilenameFilter.java
 * 版权：Copyright by www.wootide.com
 * 描述：
 * 修改人：qianfm
 * 修改时间：Sep 24, 2012
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */
package com.wootide.cms.common.manager;

import java.io.File;

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOCase;

/**
 * 〈一句话功能简述〉
 * 〈功能详细描述〉
 * @author qianfm
 * @version Sep 24, 2012
 * @see SimpleFilenameFilter
 * @since
 */

public class SimpleFilenameFilter implements java.io.FilenameFilter
{
    
    /**
     * 过滤器.
     */
    private String filter;
    
    /**
     * 是否大小写敏感.
     */
    private boolean capSense;
    
    /**
     * 
     * 构造函数.
     *
     * @param filter String 文件名所要包含的字符串
     * @param capSense boolean 是否大小写敏感
     */
    public SimpleFilenameFilter(String filter, boolean capSense)
    {
        this.capSense = capSense;
        if (this.capSense)
        {
            this.filter = filter;
        }
        else
        {
            this.filter = filter.toLowerCase();
        }
    }
    
    /**
     * 过滤规则.
     * 
     * @param dir File 文件所在目录
     * @param name String 当前文件名
     * @return boolean 是否应该选择
     */
    @Override
    public boolean accept(File dir, String name)
    {
        String temp = null;
        if (!this.capSense)
        {
            temp = name.toLowerCase();
        }
        IOCase iocase = IOCase.SYSTEM;
        if (this.capSense)
        {
            iocase = IOCase.SENSITIVE;
        }
        else
        {
            iocase = IOCase.INSENSITIVE;
        }
        return FilenameUtils.wildcardMatch(temp, this.filter, iocase);
    }
    
    /**
     * 获得filter.
     * 
     * @return filter
     */
    public String getFilter()
    {
        return filter;
    }
    
    /**
     * 设置filter.
     * 
     * @param filter 要设置的 filter
     */
    public void setFilter(String filter)
    {
        this.filter = filter;
    }
    
    /**
     * 获得capSense.
     * 
     * @return capSense
     */
    public boolean isCapSense()
    {
        return capSense;
    }
    
    /**
     * 设置capSense.
     * 
     * @param capSense 要设置的 capSense
     */
    public void setCapSense(boolean capSense)
    {
        this.capSense = capSense;
    }
    
}
